草庐IT

php sql同步等待

全部标签

c# - Task<TResult> 可以/应该包装在 C# 5.0 等待中,它在 TResult 中是协变的吗?

我非常喜欢使用C#5.0异步编程。然而,有几个地方更新旧代码以与TAP模型保持一致给我带来了问题。这是其中之一-我不确定为什么Task在TResult中不是协变的,但在尝试更新协变接口(interface)以从同步模式移动到异步模式时,它给我带来了问题:旧代码:publicinterfaceIInitializable//**outgenericmodifier**{//////Booleantoindicateifclassisready///boolIsInitialized{get;}//////Callsforinstancetobeinitializedusingcurren

c# - 如果静态只读成员调用静态方法获取值,是否同步完成?

给定:publicclassMyClass{privatestaticreadonlyDictionarymydict=CreateDictionary();privatestaticDictionaryCreateDictionary(){...}}这是同步完成的吗?(即MyClass的两个快速实例化是否会导致CreateDictionary()被调用两次? 最佳答案 是的,它是线程安全的。IstheC#staticconstructorthreadsafe?Staticconstructorsareguaranteedtober

c# - 在退出程序之前等待 System.Threading.Timer 回调完成

我有一个List.每个计时器以可配置的时间间隔触发(默认10分钟)。所有调用相同的回调方法(具有不同的参数)。回调方法可能需要几秒钟才能完成其工作。当程序终止时,回调方法的执行似乎立即停止(我没看错吗?)。如何在退出程序之前优雅地等待任何当前正在执行的回调方法完成? 最佳答案 您可以使用WaitHandler参数处理所有计时器。仅当回调方法完成时才会向此处理程序发出信号(如规范所述:“在所有当前排队的回调完成之前,计时器不会被释放。”)voidWaitUntilCompleted(ListmyTimers){ListwaitHnd=

c# - 取消任务并等待它完成

我有一项耗时的任务,我需要在单独的线程中运行以避免锁定GUI线程。随着此任务的进行,它会更新特定的GUI控件。问题是用户可能会在任务结束前移动到GUI的另一部分,在这种情况下,我必须:取消正在进行的任务(如果它处于事件状态)等到它完成取消:这很重要,因为耗时任务的目标是更新特定控件。如果有多个线程同时尝试执行此操作,事情可能会变得一团糟。从头开始任务举一个具体的例子,假设表单有两部分:一部分用于导航目录树,另一部分用于显示缩略图。当用户导航到另一个目录时,需要刷新缩略图。首先我想到了使用BackgroundWorker和AutoResetEvent来等待取消,但我一定是搞砸了,因为我在

c# - 在等待 List<Task> 中的所有任务完成时显示进度

我目前正在尝试在一行的末尾连续打印点作为不确定进度的一种形式,同时运行大量任务,使用以下代码:start=DateTime.Now;Console.Write("*Processingvariables");TaskentireTask=Task.WhenAll(tasks);Taskprogress=newTask(()=>{while(!entireTask.IsCompleted){Console.Write(".");System.Threading.Thread.Sleep(1000);}});progress.Start();entireTask.Wait();timeDi

c# - 等待 TcpClient 数据可用的最佳方式?

while(TcpClient.Client.Available==0){Thread.Sleep(5);}有更好的方法吗? 最佳答案 当然!只需在流上调用Read(...)即可。这将阻塞直到数据可用。除非您真的必须直接使用TcpClient,否则我通常会尽可能多地在流上进行操作。如果您想使用套接字,只需调用Receive(byte[])它将阻塞直到数据可用(或套接字关闭)。现在如果不想阻塞,可以使用Stream.BeginRead或Socket.BeginReceive异步工作。(或从.NET4.5开始的ReadAsync。)我个

c# - 等待异步 TaskEx

什么是TaskEx?在http://www.i-programmer.info/programming/c/1514-async-await-and-the-ui-problem.html?start=1或awaitTaskEx.Delay或Awaitasyncclarification.我用TaskDoWork(){returnTask.Run(()=>{for(inti=0;i示例使用这个TaskDoWork(){returnTaskEx.Run(()=>{for(inti=0;i我这样调用它awaitDoWork();如果您只使用Task,await什么也不返回,也没有响应。如果

c# - MessageQueue 和异步/等待

我只想在异步方法中接收我的消息!它卡住了我的用户界面publicasyncvoidProcessMessages(){MessageQueueMyMessageQueue=newMessageQueue(@".\private$\MyTransactionalQueue");MyMessageQueue.Formatter=newXmlMessageFormatter(newType[]{typeof(string)});while(true){MessageQueueTransactionMessageQueueTransaction=newMessageQueueTransacti

c# - 双向文件夹同步加密以保护我的 Dropbox 数据

我想写一个小的.NET脚本/工具,它至少大部分与SecretSync相同。或BoxCryptor,但没有将加密key存储在公司的网络服务器上。首先,这听起来很简单:您有两个文件夹——“解密”文件夹和“加密”文件夹。在这两个文件夹上都有一个FileSystemWatcher因此,当文件发生更改时,该工具会收到通知。如果“解密”文件夹中的文件发生更改,它会加密该文件并将其写入“加密”文件夹。如果“加密”文件夹中的文件发生更改,它会解密该文件并将其写入“解密”文件夹。目前没问题。但是,如果用户直接从“已解密”文件夹运行应用程序(例如KeePass),会发生什么情况?同步和加密过程现在会遇到问

c# - 测试显示 "await"明显更慢,即使等待的对象已经完成

我想通过使用await/async来测试程序的开销。为了对此进行测试,我编写了以下测试类:publicclassEntity:INotifyCompletion{privateActioncontinuation;privateinti;publicvoidOnCompleted(Actioncontinuation){this.continuation=continuation;}publicEntityGetAwaiter(){returnthis;}publicEntityGetResult(){returnthis;}publicboolIsCompleted{get{retu